অ্যাপাচি কমন্স কালেকশনস লাইব্রেরিতে Bag হলো একটি বিশেষ ডেটা স্ট্রাকচার, যা একটি কালেকশনে উপাদানগুলোর সংখ্যা (count) ট্র্যাক করতে ব্যবহৃত হয়। এর দুটি সাধারণ ইমপ্লিমেন্টেশন হল HashBag এবং TreeBag।
Bag একটি ইন্টারফেস, যা এমন কালেকশন প্রদান করে যেখানে প্রতিটি উপাদানের উপস্থিতির সংখ্যা সংরক্ষণ করা হয়। এটি সাধারণ Set-এর মতো হলেও, উপাদানগুলির সংখ্যা গুনে রাখতে পারে।
HashBag হল Bag-এর একটি ইমপ্লিমেন্টেশন, যা একটি HashMap ব্যবহার করে উপাদান এবং তাদের সংখ্যা সংরক্ষণ করে। এটি অর্ডার সংরক্ষণ করে না, তবে দ্রুত অ্যাক্সেস প্রদান করে।
TreeBag হল Bag-এর আরেকটি ইমপ্লিমেন্টেশন, যা একটি TreeMap ব্যবহার করে উপাদান এবং তাদের সংখ্যা সংরক্ষণ করে। এটি উপাদানগুলোকে সাজানো (sorted) অবস্থায় রাখে।
Comparable
ইন্টারফেস বা কাস্টম কম্পারেটর সমর্থন করে।import org.apache.commons.collections4.Bag;
import org.apache.commons.collections4.bag.HashBag;
public class HashBagExample {
public static void main(String[] args) {
// HashBag তৈরি
Bag<String> hashBag = new HashBag<>();
// উপাদান যোগ করা
hashBag.add("Apple", 3);
hashBag.add("Orange", 2);
hashBag.add("Banana", 1);
// ডেটা রিট্রিভ করা
System.out.println("Bag contents: " + hashBag);
System.out.println("Count of Apple: " + hashBag.getCount("Apple"));
// উপাদান সরানো
hashBag.remove("Apple", 2);
System.out.println("Bag contents after removal: " + hashBag);
}
}
Bag contents: [Apple:3, Orange:2, Banana:1]
Count of Apple: 3
Bag contents after removal: [Apple:1, Orange:2, Banana:1]
import org.apache.commons.collections4.Bag;
import org.apache.commons.collections4.bag.TreeBag;
public class TreeBagExample {
public static void main(String[] args) {
// TreeBag তৈরি
Bag<String> treeBag = new TreeBag<>();
// উপাদান যোগ করা
treeBag.add("Apple", 3);
treeBag.add("Orange", 2);
treeBag.add("Banana", 1);
// ডেটা রিট্রিভ করা
System.out.println("Bag contents (sorted): " + treeBag);
System.out.println("Count of Orange: " + treeBag.getCount("Orange"));
// উপাদান যোগ বা সরানো
treeBag.add("Grapes");
treeBag.remove("Apple", 1);
System.out.println("Bag contents after update: " + treeBag);
}
}
Bag contents (sorted): [Apple:3, Banana:1, Orange:2]
Count of Orange: 2
Bag contents after update: [Apple:2, Banana:1, Grapes:1, Orange:2]
বৈশিষ্ট্য | HashBag | TreeBag |
---|---|---|
অর্ডার | উপাদান অর্ডার সংরক্ষণ করে না | উপাদান সাজানো অবস্থায় থাকে |
ডেটা স্ট্রাকচার | HashMap ব্যবহার করে | TreeMap ব্যবহার করে |
পারফরম্যান্স | দ্রুত অ্যাক্সেস (O(1)) | তুলনামূলক ধীর (O(log n)) |
ব্যবহারক্ষেত্র | যখন সাজানোর প্রয়োজন নেই | যখন উপাদান সাজানোর প্রয়োজন হয় |
HashBag এবং TreeBag উভয়ই Bag
ইন্টারফেসের কার্যকর ইমপ্লিমেন্টেশন, তবে এদের ব্যবহার নির্ভর করে প্রয়োজনীয় পারফরম্যান্স এবং সাজানোর প্রয়োজনীয়তার উপর। HashBag দ্রুত কার্যক্রমের জন্য উপযুক্ত, যেখানে TreeBag সাজানো ডেটার জন্য কার্যকর। অ্যাপাচি কমন্স কালেকশনসের এই ফিচারগুলো ডেটা ম্যানেজমেন্টে আরও কার্যকরিতা যোগ করে।
common.read_more